home *** CD-ROM | disk | FTP | other *** search
- This README contains 2 parts:
-
- - my own (buytaert@innet.be) annotations to the Linux version of OOD
- - the original README that can be found with the sources. This README
- contains some notes, warnings and plea's. If you can do something to
- help professor Kim, please respond...
-
- First, a disclaimer. I compiled the original sources, with some tweaking
- (nothing heavy), for Linux and compiled the objects to a statically linked
- executable, since it contains Motif calls for its GUI and few people have
- Motif installed ($). I hope it works for you, but if it doesn't, I can't
- do much about it. My Linux distribution is sort of 'own build' and is
- about 14 months old... So, if you have problems, try to locate them in
- the source itself and report them to me, and I'll see what I can do...
-
- Secondly, this software is very much work in progress !! It can crash
- and isn't fully operational yet. But please do try it and provide feedback
- for professor Kim. In my e-mail conversiations with him, he has been
- very responsive and helpfull.
-
- If you want to have a look at the sources, or try to port them to the
- Xlib only, you can find references to the source in the second part of
- this README.
-
- If you have any remarks... you can contact me at buytaert@innet.be.
-
- Stef
-
- P.S. Sorry for this 'quick and dirty' work. After my announcement to
- c.o.l.m, several people have asked me to upload it ASAP. So, all this
- is done in a few minutes, literally :-)
-
- ---- Included README from OOD ----------------------------
-
- **************** Object Oriented Designer ***************
-
- Prof. Taegyun Kim [ktg@taejo.pufs.ac.kr]
- Pusan University of Foreign Studies
- Pusan, Korea
-
- Version : Version 1.3.1
- Revised : October 6 1994
-
- *********************************************************
-
- Let me introduce myself. I am an assistant professor working at Department of
- Computer Engineering in Pusan University of Foreign Studies which resides in
- Pusan, Korea. My major interest is in software engineering especially in the
- area of object oriented methodologies. In teaching courses in systems analysis
- and software engineering I found a need for a good case tool that could be used
- by my students. Unfortunately, commercial case tools are too expensive for a
- university to purchase so I developed OOD. I have spent 17 man months building
- OOD. Because this is my first project combining object oriented methods, Motif,
- and C++, some of the source code may be a little clumsy. However, it does work
- well and it is still evolving. This project is very hard but is also very
- interesting. Let's enjoy it together.
-
- P.S.: I am anxious for your criticism or comment on this product. So, if it
- works on your system, please respond to me with even a one line (very short)
- message. It will give me some encouragement. Moreover please inform me your
- status (student, professor etc.) if possible.
-
- -Taegyun Kim
-
-
-
-
- --------------- Contents --------------
- 0. Summary
- 1. System Environment
- 2. Building OOD
- 3. Initializing the Working Environment
- 4. Functions
- 5. Examples
- 6. Reference Books
- 7. Cautions
- 8. FAQ
- ----------------------------------------
-
- 0. Summary
- ----------
-
- The Object Modeling Technique [OMT] by James Rumbaugh et al. is a methodology
- for object oriented development with a graphical notation for representing
- object oriented concepts. Object Oriented Designer [OOD] is a case tool for
- constructing the object diagrams defined in OMT. In order to use OOD it is
- necessary to understand OMT and its graphical notation. See reference (2).
-
- Why "OMT"? OMT evolved from the Extended Entity Relationship [EER] model which I
- have studied since the mid 80's. There are a number of other approaches to
- expressing object oriented concepts but I believe that OMT is superior to most
- of these. Yourdon's Object Oriented Analysis [OOA] notation, for example, is
- another excellent approach to the problem but has some limits in functionality,
- particularly with respect to data modeling, that are present in OMT.
-
- Currently, OOD has following primary functions:
-
- - general graphics editor (with limited functionality)
-
- - object diagram layout (with some additions w.r.t. original OMT notation)
-
- - C++ code skeleton generation (header file + source file)
- The comments and codes for individual member functions can be documented,
- or edited within OOD directly.
- The C++ code generator supports inheritance.
-
- I have attempted to make OOD as user-friendly as possible. My students learn to
- use it in a day even without a manual. The user-friendliness of OOD is due to my
- own object oriented, user interface mechanisms.
-
- Currently OOD generates a C++ code skeleton from an object diagram. I have a
- short term final goal to develop an object oriented "environment" with
- flexibility and portability. I think that about additional 20 man months effort
- could lead me to the final goal. Because I am currently working very hard to
- enhance its functionality, I am not especially concerned with system portability
- issues at the moment so building OOD on your particular platform may require a
- little work on your part. Please inform me of any changes that you need to make
- to build OOD on your system.
-
-
- 1. System Environment
- ---------------------
- OOD was built on a SPARC station running OS4.1.x, X11-R5 and Motif-1.2 and
- C++-2.0. OOD has also been successfully built on a SPARC using gcc-2.5.8 and
- libg++-2.5.3. It should build on most UNIX systems with X11-R5, Motif-1.2 and a
- "reasonable" C++ compiler.
-
- 2. Building OOD
- ---------------------
- 1) In ood directory edit the Makefile to reflect your environment
- 2) run "make depend"
- 3) run "make"
-
- 3. Initialize Working Environment
- --------------------------------
- OOD requires the user to select a working repository in which to store various
- output files. If this is the first time you are running OOD:
-
- 1) point at the top-menu,
- 2) select "Environment",
- 3) select "Setup",
- 4) define your working repository.
-
- If a working repository has been previously defined, select it:
-
- 1) point top-menu
- 2) select "change to"
- 3) set your working repository
-
- 4. Functions
- --------------
- Menu items:
-
- Most of the menu choices are self-explanatory. Not all of the menu choices are
- operational at this time. The project menu selects which popup menu will appear
- when the pointer is in the background of the OOD window and button3 is
- pressed. Currently, only "main Popup" and [drawing] "primitives Popup" are
- operational.
-
- Mouse buttons:
-
- The behavior of the mouse buttons is context sensitive. Generally:
-
- Button1 : draw, move, copy ... some object
- Button2 : edit some text object
- Button3 : popup a menu
-
- Button3 can popup several different menus depending upon the current selection
- from the Project menu and the location of the cursor. For example, select "main
- Popup" from the Project menu, move the pointer to an empty region of the OOD
- window and click button3.The "Primary Popup" will appear. From this menu select
- "Class Template" to place a class template on the screen. Move the pointer onto
- the class template and notice the object becomes highlighted. While the pointer
- is on the class template, click button3 again. This time the "Class" popup
- appears which will allow you to select operations that can be performed on
- that object.
-
- Now select "Primitives Popup" from the Project menu, move the pointer to an
- empty region of the OOD window and click button3 to popup the drawing
- Primatives menu. Select "box", hold down button1 and drag the mouse to draw a
- box. When you are satisfied with the size and shape of the box release button1.
- Move the pointer onto the box and notice that the box becomes highlighted.
- While the pointer is on the box click button3 to popup a menu that lists the
- operations that you can perform on the box.
-
- Button2 is used to edit text. If button2 is clicked in an empty region of
- the OOD window text may be added to the background at that point. To teminate
- text entry click button1 or press Esc key. Note that the text may be "re-edited"
- by placing the pointer over the text and clicking button2.
-
- Experiment with the buttons and menus to explore the functions of OOD.
-
- Note: class template is slightly different from original notation,
- but if you generate C++ code skeleton, its meaning will be clear.
-
- 5. Examples
- ------------
- An example is uploaded to Examples directory.
-
- 6. Reference Books
- -------------------
- 1) "Object-Oriented Programming with C++ and OSF/Motif"
- - Douglas A. Young
- 2) "Object-Oriented Modeling and Design"
- - James Rumbaugh et al.
-
- 7. Cautions
- ------------
- OOD will be released from this site intermittently. Please take note of the
- release date above. Because OOD is evolving rapidly, some part of the code may
- not work correctly or cause segmentation faults. Let me know what you find. The
- problem may already have been fixed by the time you find it. If not, I will
- see if I can fix it.
-
- - check ChangeLog file out carefully
- - please don't ask me about compiler complaints
- I have no experience with other systems (OS,Compiler,..) except SUN,
- I can't help you with such problems.
- - please don't complain me about absence of the manual
- I can't use English naturally,
- so it's very very very big burden for me to make the manual.
- If you want it really, how about you making it (partially) and sharing it ?
- For example, you can make a manual for a specific popup or pulldown,
- and send it to me, then I revise it and collect it,
- and distribute it. Could it be possible ?
- Are there any volunteers ?
- How about you, Vitaly ?
- Axel ?
- Thierry ?
- Phil ?
- Ian ?
- .... [Sorry for menting your names :-)]
- I don't think that this will happen.
- It may be a dream of my own.
- Most of you seem to be very selfish with
- even Not-For-Sale software. :-) :-) :-( :-(
- I know that most of you are accustomed to use OOD already.
- But think about some one who is just ready to use it,
- like you before. :-) :-)
- - please don't complain me about not-yet-implemented features
- For example, qualification, link attribute, even functional model ...
- (qualification, link attribute is completed in 1.3.0)
- I know most of them,
- OOD is still immature and evolving
- I will make them ... but I am not sure when it will be completed.
- - I want to know the differences with other CASE tools.
- If you have some experiences with other CASE tools,
- would you let me know the comparisons ?
- - Is it clear to you, the below request of my own ?
- I could evaluate how many people go on with OOD by examples you upload,
- there is only one person who upload example, so far.
- (I deleted this example because it was made by old version)
- Is really there only one person who is interested in or using OOD ?
- If it is, then I may do very obsolete work.
- But it was very interesting for me.
- - When you send me a mail, please let me know your status
- (for example, nation, student or professor, position in company ...)
- - I will take some rest for a while. Duration may be about 4 months.
- During this resting time, I will just concentrate on fixing bugs (if you
- let me know the existence of runtime segmentation faults).
- So although I will use same version name 1.3.1,
- it will may be different when it would be patched.
- Check date of this file always or take a look at PatchCountX.
- In the beginning of the next year, I will be back.
- It has been very interesting time to talk with some of you.
- --- Bye everyone !!! ---
-
- *******************************************************************************
- * If OOD works at your site, would you share some of documents made by OOD. *
- * Some of examples (named *.OD) are needed to demonstrate the functionalities *
- * of OOD. Just put them at export.lcs.mit.edu : IP-address 198.112.44.100 *
- * (directory : /contrib/devel_tools/OOD/Examples). *
- *******************************************************************************
-
- 8. FAQ
- -------
-
- - A bigger problem is that classes cannot be edited if a link
- to them is defined. This forces you to almost have the design
- finished in the head before putting it down. What is the reason for
- such a behaviour? Is there a workaround? Eliminate all links,
- edit and recreate the links is quite annoying.
-
- Ans) Allowing edition class template which is linked is too complicated to
- maintain the diagram. So I circumbent this problem by allowing edition class
- template linked when it is minimized. So you had better start to draw (or analyze,
- design) class template "minimized". For minimized class template, it is possible
- to modify, and after modification, it is reshaped as minimized. To trigger
- modification (or displaying) for minimized class template, just push Button2 in
- the class template.
-
- - What are the X resources that one can define? Fonts for classes,
- attributes, methods, etc.
-
- Ans) Fonts for these can not be customized using resource file Ood. If you dislike
- fonts previously specified, change font name explicitly in source file.
- The exact position to change font is line no. 567 in MyInit.C file.
- At the line :
- "-misc-fixed-medium-r-normal--15-*" ---> change this font to what you want
- I think that variable size font may make some serious problems.
-
- - How can I fix the bugs of this kind ?
- "floating point exception" (division by zero in your graphical modules,
- always while calculating "atan (x/y)", it can be avoided by replacing with
- "y?atan(x/y):0")
-
- Ans) These style of runtime segmentation faults was reported a little times.
- I think that this problem is very related to <math.h> header file
- and libm.a archived library.
- But what you patched is wrong. Think about the meaning of atan() function.
- It is the inverse function of tan(). So keep in mind the following mathematical
- properties.
- tan(0) = 0 means atan(0) = 0
- tan(pi/4) = 1 means atan(1) = pi/4
- tan(pi/2) = infinite_number means atan(?/0) = atan(infinite_number) = pi/2
- So you have to fix it as follows,
- y ? atan(x/y) : M_PI/2.
- It must be same for any case of divide by zero with x/y.
- If you have to make a fix for x/y, do not modify it simply as follow,
- y ? x/y : 0.
- but modify as follow,
- y ? x/y : VERY_VERY_LARGE_NUMBER_DEFINED_IN_YOUR_SYSTEM
- I don't want to insert this modification to source code, because I have no problem
- with it, and I like the original style.
- *** I made some fixes for these problem, but I am not sure because I can't test it.
- Would you let me know if these problems disappeared ?
-
- - How can I customize the diagram size generated by OOD.
- Ans) It's possible to change diagram shape manually.
- Just modify *.ps file as you want like this,
- ----------- in the beginning part of *.ps file ----------
- %!PS-Adobe-1.0
- 1 {
- x-position y-position translate
- x-scale y-scale scale
- ...
- ---------------------------------------------------------
-
- - About statically linked binary for OOD.
- Ans) I am not confident to distribute statically linked binary for OOD. I think
- that it may make legal troubles with Motif. Actually I don't know about it.
- But if you are sure that it makes no problem,
- how about you (someone who can compile OOD with no trouble) uploading it ?
- Your help will be greatly appreciated by others who wish to use it without Motif.
- Making statically linked binary for OOD needs only "-Bstatic" option in LDFLAG.
-
- - Make depend here can't find <osfcn.h>. What's that ?
- Ans) Somebody said that he used <unistd.h> other than <osfcn.h>.
- I included this file for the use of fork() function.
-
- HELP ME PLEASE !
- I WANT TO MAKE REVERSE ENGINEERING FACILITY NEXT TIME.
- IF OOD CAN MAKE CLASS TEMPLATE FROM EXISTING C++ SOURCE FILE,
- WE CAN DO THE BETTER MAINTENANCE JOB.
- SO I NEED C++ SYNTAX FOR PARSING WITH YACC.
- IF YOU HAVE C++ SYNTAX (IT WILL BE WELCOME ALSO, ALTHOUGH IT IS COARSE
- SYNTAX), PLEASE SEND IT TO ME BY E-MAIL.
-
- ONE MORE HELP PLEASE !
- I WANT TO MAKE A SEARCH FACILITY TO FIND CLASS WITH KEYWORDS TOO.
- BUT WHAT I REALLY WANT TO MAKE IS FACETED SEARCH FOR A CLASS.
- SO I WILL DO DEFINE SOME FACET ATTRIBUTES AND IT'S VALUES,
- FOR EXAMPLE,
- <Application Domain> <- one example of class facet
- Mathematics, Statistics, Data Processing ... <- values for this facet
- I WANT YOU TO LET ME KNOW WHAT YOU THINK ABOUT THESE ITEMS.
-
- ANY HELP FROM YOU WILL BE GREATLY APPRECIATED.
- THANK YOU.
-